<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>vue学习</title>
    <script src="./js/vue.js"></script>
  </head>
  <body>
    <div id="app">
      <div>
        手机：
        <input type="text" v-model="phone" v-phone />
      </div>
    </div>
    <script>
      const app = Vue.createApp({
        data() {
          return {
            phone: ''
          }
        },
        directives: {
          phone: {
            updated(el) {
              // 获取表单项中的数据
              let value = el.value
              // 通过正则来判断当前是否为合法的手机号码
              let reg = /^1[3-9]\d{9}$/
              // 如果不是一个合法的手机号码，要给用户一个提示
              if (!reg.test(value) && value != '') {
                el.style.color = 'red'
                // 当前表单项它还没有生成提示文字
                if (!el.nextSibling) {
                  // 在输入框后面添加一个span用来给用户一个提示
                  let spanDom = document.createElement('span')
                  spanDom.innerHTML = '手机号码不合法'
                  el.parentNode.appendChild(spanDom)
                }
              } else {
                el.style.color = 'black'
                el.nextSibling?.remove()
              }
            }
          }
        }
      })
      app.mount('#app')
    </script>
  </body>
</html>
